#!/usr/bin/env ruby
gem 'railties'
require 'rails/generators'
require 'rails/generators/rails/app/app_generator'
template_path = File.expand_path('../../templates/refinery/installer.rb', __FILE__)

def show_help_message
  puts "Usage:"
  puts "  refinerycms APP_NAME [options]"
  puts ""
  puts "Options:"
  # Support when running locally
  relative_path = File.expand_path('../../core/lib/generators/refinery/cms/cms_generator.rb', __FILE__)
  if File.exist?(relative_path)
    require relative_path
  else
    gem 'refinerycms-core'
    require 'generators/refinery/cms/cms_generator'
  end
  Refinery::CmsGenerator.class_options.each do |raw, option|
    dasherized = "--#{option.name.to_s.gsub('_', '-')}"
    dasherized = [option.aliases, "[#{dasherized}]"].flatten.join(', ') if option.aliases.any?
    puts "  #{dasherized}".ljust(28) << "# #{option.description}"
  end
end

if ARGV.empty?
  show_help_message
  exit 0
end

case ARGV.first
when "-h", "--help"
  show_help_message
  exit 0
when "-v", "--version"
  puts "Refinery CMS #{Gem.loaded_specs['refinerycms'].version}"
  exit 0
end

application_name = ARGV.shift

result = Rails::Generators::AppGenerator.start [application_name, '-m', template_path, '--skip-test-unit'] | ARGV

if result && result.include?('Gemfile')
  note = ["\n=== ACTION REQUIRED ==="]
  note << "Now you can launch your webserver using:"
  note << "\ncd #{application_name}"
  note << "rails server"
  note << "\nThis will launch the built-in webserver at port 3000."
  note << "You can now see Refinery running in your browser at http://localhost:3000/refinery"

  if ARGV.include?('--heroku')
    note << "\nIf you want files and images to work on Heroku, you will need to setup S3:"
    note << "heroku config:add S3_BUCKET=XXXXXXXXX S3_KEY=XXXXXXXXX S3_SECRET=XXXXXXXXXX S3_REGION=XXXXXXXXXX"
  end

  note << "\nThanks for installing Refinery CMS, we hope you enjoy crafting your application!"
  note << "---------\n\n"

  puts note
end
